use env_logger::{Builder, Env};
use log::LevelFilter;
use std::fs::OpenOptions;

pub fn parse_log_level(level: &str) -> LevelFilter {
    match level.to_lowercase().as_str() {
        "trace" => LevelFilter::Trace,
        "debug" => LevelFilter::Debug,
        "info" => LevelFilter::Info,
        "warn" => LevelFilter::Warn,
        "error" => LevelFilter::Error,
        _ => LevelFilter::Info, // 默认使用 Info 级别
    }
}

pub fn init_logger(level: LevelFilter) {
    // 创建日志文件
    let log_file = OpenOptions::new()
        .create(true)
        .write(true)
        .append(true)
        .open("app.log") // 日志文件名
        .unwrap_or_else(|_| {
            eprintln!("无法创建日志文件，使用标准输出");
            std::process::exit(1);
        });

    // 初始化日志
    Builder::from_env(Env::default().default_filter_or(level.as_str()))
        .format_target(false)
        .target(env_logger::Target::Pipe(Box::new(log_file))) // 输出到文件
        .init();
}